perm filename THIS.NTE[NEW,LSP] blob
sn#406284 filedate 1978-12-28 generic text, type C, neo UTF8
COMMENT ā VALID 00002 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 Laboratory for Computer Science
C00014 ENDMK
Cā;
Laboratory for Computer Science
545 Technology Square, Rm 834
December 15, 1978
Greetings to MACLISP lovers in the
TOPS-10/TOPS-20 world:
A lot of work on the TOPS/SAIL versions has been done this past year,
especially by Howard I. Cannon (who hacked a TOPS-10 during his high school
days) and by Richard P. Gabriel (who is hacking a thesis at the Stanford
AI Lab). Gabriel has promised to write an introduction to NEWIO for the
TOPS-xx neophyte, but that is still forthcoming. We here at this side
have been promising to write a complete maclisp manual, and that too . . .
The next file on this tape will be a listing, in a tape-dump command format,
of all the files on the tape. Some of the support software may be new to
you, but most of it is optional and included so that you may try it out.
It would be a good idea to look at the first few pages or so of any source
file with which you are unfamiliar, for we often place a lot of commentary
there.
Best wishes for happy hacking with maclisp
-- Jonl --
Here are just a few caveats:
TOPS-10 and TOPS-20 worlds:
NEWIO file system usage may be new for some of you. Apologies that
there is not a more documentation on it yet, since I know that most of
you don't even have the blue Moonual circa 1974. The LISP.NEWS file,
entry dated "April 18, 1975" has a lot of commentary on the newio scheme
as it was being put into the PDP10 versions of maclisp.
A reminder: source file have the extensions MID for midas; LSP and INI
for lisp; NOTE, DOC, NEWS, and etc. for text commentary; REL for output
of midas (and loadable by TOPS-10/TOPS-20 linkers); FASL for output of
the lisp compiler, and loadable by the lisp functions LOAD or FASLOAD.
Many FASL files must be in a place that the lisp system can find them
during AUTOLOADing; generally we have assumed that these will be accessible
as SYS:foo.FAS on TOPS-10 systems, and DSK:<MACLISP>foo.FASL on the
TOPS-20 systems. Perhaps by appropriate setting of search rules, you will
be able to adapt to these assumptions without having to reassemble lisp.
TOPS-10 world:
1) there are no SHR or LOW files on the tape, so you will have to
LINK up the LISP.REL yourself. Also, you will have to run the
lisp with the "lisp init" file CCLOAD.INI in order to make up
a compiler. Normally, all your files should be on one directory,
TOPS-20 world:
1) There is no "LISP INIT" file facility yet. If you want to make
a compiler, just load up a LISP with default allocations (since
only BPS is important in a paged-implemntation) and LOAD in the
file CCLOAD.INI It will then as you one question, to which "?"
is a valid reply; common case is to type a <space> at it.
2) The answer you type to ALLOC?s question is not recognized
if it tries to specify an INIT file; furthermore, there is
a failure to activate on alphabetic chars, so Y or N have to
be followed by some activator (which unfortunately will be read
by the subsequent actions - try Y<rubout> if you want to allocate).
3) file names are in general three components, the third being th
generation number; but standard old file names will work in
general. Try to stick to NEWIO format, e.g.
(UREAD (PS MUMBLE) MY FILE) and (UREAD (PS MUMBLE) MY FILE /3)
rather than (UREAD MY FILE . . .). Generation numbers may be either
fixnums or symbols consisting only of digits; generally, file names
with omitted generation numbers will supply the null symbol, ||,
which specifies the highest generation number for that filename.ext.
4) There may be a bug in PROBEF and UPROBE when applied to any
non-connected directory, and some bugs in RENAMEF:
1) RENAMEF apparently fails to do the corresponding CNAMEF as is
done on the ITS version
2) RENAMEF fails to accept namelist, but barfs about illegal
source/destination designator
3) If one does a RENAMEF while the file is open, then subsequent use of
TRUENAME on the open file-object dies in illegal op code execution.
To some degree, these bugs will cause the compiler to die if you compile
a file for which there is already a FASL output.
5) <control-Q> doesn't work!! This conflicts the X-on, X-off protocol for
terminals. [so if you like to do UREAD followed by <control>-Q, then
either learn to use LOAD instead, or do UREAD followed by (SETQ āQ 'T) -
yes, that is <uparrow><Q>]. Furthermore, (SSTATUS TTYINT ...) doesn't
really make any other characters as interrupts except the existing ones,
namely <control>-B <control>-D <control>-G <control>-W <control>-V
Currently, <control>-R does the same thing as in ITS maclisp, but
probably this will be changed to mean "retype the current input".
Some things that may be documented in the LISP.NEWS shortly, but are
not there as of today:
1) EVAL-WHEN - - a new fsubr
(EVAL-WHEN (<id1> <id2> ... <idn>) <foo1> <foo2> . . . <foon>)
will cause the evaluation of the various <fooi> only if the environment
matches one of the indicators in the first list; these indicatiros <idi>
may be among EVAL, COMPILE, or LOAD.
(EVAL-WHEN (COMPILE) (SAY THIS)) is entirely equivalent to
(DECLARE (SAY THIS))
(EVAL-WHEN (EVAL LOAD) (RUN THAT)) is generally equivalent to
(RUN THAT)
(EVAL-WHEN (LOAD) (PRINT '|Loading Compiled version of Foo|))
will cause the print request to appear only in the compiled FASL
file, and be run at load time. (or LAP file if you don't assemble).
(EVAL-WHEN (EVAL COMPILE LOAD) (SETSYNTAX '/% 'MACRO 'FUNNY-FUN))
causes evaluation in all environments, which is often what one wants
with macro characters.
2) Under the ITS operating system, a JCL line with only a <space> means don't
use any INIT file, even if the connected directory has one.
3) COMPLR
new switch - H for variable EXPAND-OUT-MACROS
Toplevel forms which are not functions to be compiled (or other
wise specially treated by MAKLAP) could be fully macro-expanded
before being output to the FASL file. Normal setting is non-null
meaning to do this expansion.
new variable - MAKLAP-DEFAULTF-STYLE
The command line read maklap usually consists of two file specs
separater by a left-arrow (underscore in new ascii); the filling
in of the unspecified components of a file spec can be done either
from the accumulated left-to-right mergeing, or begin separately
for input and output file specs. MIDAS style is the former, and
the value of this new variable either is MIDAS or ().
when making up, can set feature NO-EXTRA-OBARRAY
(SSTATUS FEATURE NO-EXTRA-OBARRAY) will permit CCLOAD to make
up a compiler without the COBARRAY/CREADTABLE which separates
user environment from compiler environment. If saving about 1.5K
or so words means that much to you, and taking a chance means
very little . . .